输入输出流
char str[]="123 456";
istrstream ins (str);
char ch;
ins>>ch;
这里是将数组内的字符一个一个读出,如果我现在想读出一个数字23,请问该如何做,还有就是数组内的空格能读出吗
[解决办法]
char str[]="123 456";
istrstream ins (str);
int num;
ins>>num;//读出第一个数字123;
但是不能只读出23。如果想只读出23就用c语言的函数。sscanf();
[解决办法]
可以的,记住C++输入流的特性,从当前流指针读取到下一个空格或者其他空白符.
按照你的需求:
- C/C++ code
#include "stdafx.h"#include <strstream> #include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ char str[]="123 456"; istrstream ins(str); char c; int num; ins>>c; ins>>num; cout<<c<<endl; cout<<num<<endl; return 0;}
[解决办法]
不推荐 <strstream>
使用 <sstream>
- C/C++ code
#include <iostream>#include <sstream>using namespace std;int main(){ char str[] = "123 456"; stringstream ins(str); string line; while (getline(ins, line)) { for (size_t i = 0; i != line.size(); i++) { cout << line[i] << endl; } } return 0;}
[解决办法]
- C/C++ code
#include <iostream>#include <sstream>#include <string.h>using namespace std;int main(){ string str = "123 456\nHello World!\n" "#include <sstream>\n"; stringstream ins(str); char line[255]; while (ins.getline(line, 255)) { for (size_t i = 0; i != strlen(line); i++) { cout << line[i] << " "; } cout << endl; } return 0;}