首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++读取文件一起字符串,然后分解

2013-12-15 
C++读取文件一行字符串,然后分解本帖最后由 isneu 于 2012-11-26 15:10:56 编辑文件每行如下:2 Anthonyva

C++读取文件一行字符串,然后分解
本帖最后由 isneu 于 2012-11-26 15:10:56 编辑 文件每行如下:
2 "Anthony  van Raan" 9
把第一列存入到整数中,中间存入到字符串数组中,最后存入到一个整数中
ifstream fin("data.txt");
string s;  
getline(fin,s);
之后如何将s分开

[解决办法]
三个列是以空格分开的话, 用strtok
[解决办法]
用strtok 
[解决办法]

static int a[1000],c[1000];
static char b[1000][100];
sscanf(s,"%d "%[^"]" %d",&a[i],b[i],&c[i]);
i++;

[解决办法]
引用:
用strtok
用strtok ,字符之间有空格的话,这样吧!
先第一次读到有"的时候,将数据存到数组中,直到"第二次出现(在此期间,不用strtok),然后再采用strtok就行了 
[解决办法]
# include <iostream>
# include <sstream>

using namespace std;

int main()
{
    string s = "2 "Anthony van Raan" 9";
    const char * digits = "0123456789";

    string::iterator it1 = s.begin();
    string::iterator it2 = s.begin() + s.find_first_not_of(digits);
    string::iterator it3 = s.begin() + s.find_last_not_of(digits) + 1;
    string::iterator it4 = s.end();

    string s1(it1, it2);
    string s2(it2, it3);
    string s3(it3, it4);

    int first, last;
    char str[BUFSIZ];

    stringstream(s1) >> first;
    strcpy(str, s2.c_str());
    stringstream(s3) >> last;

    cout << first << endl
         << str << endl
         << last << endl;

    return 0;
}

[解决办法]
使用正则表达式……
(\d+) "(.*)" (\d+)

热点排行