读取控制台输入的数据

通用解决方案(strstream)

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main()
{
    string s="123,41,2,43";

    stringstream ss(s);
    vector <string> v;
    string temp;  
    //函数原型istream& getline (istream&  is, string& str, char delim);  将is流中的数据按delim切割放入str中
    while(getline(ss,temp,','))  //可以按空格或其他char型切割
    {
        v.push_back(temp);
    }

    for(auto i:v)
    cout<<i<<endl;

    return 0;
}

读取一行个数未知的整数到vector或array中
1.输入:空格隔开的一行整数,例如1 2 3
Vector:

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
    vector<int>numbers;
    int enterNumber;

std::string line;
getline(cin, line);
istringstream iss(line);

while (iss >> enterNumber)
{
    numbers.push_back(enterNumber);
}


for(int i=0;i<numbers.size();i++)  //打印测试vector中的数据
cout<<numbers[i];

}

Array:

#include <iostream>
#include <sstream>

#include <vector>
using namespace std;
int main() {
    int arr[3]={NULL};//使用时注意定义数组长度
    int k=0;
    int enterNumber;


    std::string line;
getline(std::cin, line);
std::istringstream iss(line);
while (iss >> enterNumber)
{
    arr[k++]=enterNumber;
}


for(int i=0;i<sizeof(arr)/sizeof(int);i++)
cout<<arr[i];

}

2.输入:逗号隔开的一行整数,例如1,2,3

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
    vector<int>numbers;
    string input;

getline(cin,input);
    istringstream is(input);
int inter;
char ch;
while (is >> inter)
{
     numbers.push_back(inter); 
     is >> ch;
}



for(int i=0;i<numbers.size();i++)
cout<<numbers[i];

}

string中以int形式取出某一位
例如string str=”123456”;
int(s[0])取到的是1的ASCII码,此时减去’0’即将S[0]以int形式取出;

int a= int(s[0])-'0';

取int放入string中
方法1. stringstream(#include “sstream”)或者 strstream
例如
int n
cin>>n 输入65536
使得string=”65536”

#include <strstream>
    int n;
    cin>>n;
    strstream ss;
    ss<<n;

    string s;

    ss>>s;

方法2.c++11 新特性 to_string(int)

string to int
方法1 : 流

#include <iostream>
#include <sstream> 
using namespace std;

int main(){
stringstream ss;
string s="122312";
ss<<s;
int a;
ss>>a;

cout<<a; 


}

方法2 : c风格字符串atoi(str)

#include <iostream>

int main()
{
    int n;

    两种定义c风格字符串的方法,结尾均自动添加'\0'
    char *str = "12345.67";
    char str1[]="54321";

    n = atoi(str1);
    std::cout<<n;
    return 0;
}

从文件中按行读取

#include <fstream>
#include <iostream>
using namespace std;
int main () {
    ifstream ifile;
    ifile.open("d:\\123.txt",ios::in);
    if (ifile.is_open()) 
    {
        string a;
        getline(ifile,a);
        cout<<a;
        ifile.close();
    }
    return 0;
 }

写文件

#include <fstream>
#include <iostream>
using namespace std;
int main () {
    ofstream ofile;  //仅写,可以使用fstream类型,可以读写
    ofile.open("d:\\123.txt",ios::app); //ios:app写在文件末尾,去掉此参数则覆盖原文件
    if (ofile.is_open()) 
    {
        ofile<<"This is a test"<<endl;
        ofile.close();
    }
    return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值