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;
}
我正在开发一个使用套接字的 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;
}