C ++字符串和分隔符

时间:2015-11-16 13:05:01

标签: c++ string delimiter

所以我正在做一个程序,我将一些数据输入文件并从中读取。问题是我不知道如何处理这个问题。我从文件中读取并收到一个包含大量不同数据的字符串,这些数据由分隔符" |"分开。

   string data ="FirstName|LastName|Signature|Height";

所以我的问题是,有没有办法很好地分离这个字符串并将每个值存储在一个单独的变量中?

p.s到目前为止我已经尝试过了。我确实找到了这个函数subrt()和find(),我可以使用它来找到分隔符并取出一个值,但它没有为我提供正确的值,所以我认为我做错了。只有fname值是正确的。

    const string DELIM = "|";
    string fname = data.substr(0, data.find(DELIM));
    string lname = data.substr(1, data.find(DELIM));
    string signature = data.substr(2, data.find(DELIM));
    string height = data.substr(3, data.find(DELIM));

1 个答案:

答案 0 :(得分:1)

你不明白substr()是如何工作的。第一个参数不是找到的字符数,它是要启动的索引。请参阅doc。你应该对find函数做同样的事情。这样的事情:

string const DELIM = "|";
auto const firstDelim = data.find(DELIM);
auto const secondDelim = data.find(DELIM, firstDelim + 1); // begin after the first delim
// and so on

auto fname = data.substr(0, firstDelim);
auto lname = data.substr(firstDelim + 1, secondDelim);
// and so on