C++:按制表符拆分字符串,但包含空格

C++: String splitting by tabs, but include spaces

我正在开发一个使用套接字的 client/server 程序,我正在尝试解析输入文件。我有一个结构来分别存储专业、早期职业薪酬和职业中期。客户端程序要求用户输入专业名称和服务器程序 returns 两个工资。

输入文件的问题是:

地球物理学 54100 122200

认知科学 54000 121900

电力工程68600 119100

都是以Major[TAB]Pay[Tab]Pay分开的,major里面有空格。我想将它们中的每一个都存储在结构中。

有解决办法吗?

您可以使用 getline() 中的第三个参数来说明要在哪个字符处停止。默认是 \n,但你也可以指定它是 \t 让它停在你想要的选项卡上:

getline(std::cin, line, '\t');

从这个开始:

ifstream f("c:\temp\test.txt");
string s;
while (getline(f, s))
{
    istringstream iss(s);
    string major, early, mid;
    getline(iss, major, '\t');
    getline(iss, early, '\t');
    getline(iss, mid, '\t');
    cout << major << '|' 
         << early << '|' 
         << mid   << endl;
}