我有一个文本文件,如下所示:
8284734746
pat monahan
8284735406
pat monahan
8277059735
rolling stones black keys
rolling stonesnprudential center newark njn121512
8277167638
keith richards
prudential centernnewark njn15dec2012
因此,如果您注意到下一行中有ID和短语,或下一行中有ID和两个短语。我的目标是在一行中将ID放在一个文本文件和文本(属于该ID)中,并保存为单独的文本文件。所以我需要在我的文本文件中有条件地连接字符串。
到目前为止我的代码没有达到这个目的。
#include <iostream>
#include <fstream>
#include <string.h>
#include <sstream>
#include <iterator>
using namespace std;
bool is_number(const std::string& s)
{
return( strspn( s.c_str(), "0123456789" ) == s.size() );
}
int main()
{
ifstream inputFile("title_desc_ids.txt");
string line;
vector <string> ids;
vector <string> desc;
while (getline(inputFile, line))
{
if (is_number(line))
{
ids.push_back(line);
}
else
desc.push_back(line);
}
string full_file_name = "./title_desc_ids_all.txt";
string full_file_name_desc = "./title_desc_combined.txt";
ofstream output_file(full_file_name.c_str());
ofstream output_file1(full_file_name_desc.c_str());
copy(ids.begin(), ids.end(), ostream_iterator<string>(output_file, "\n"));
copy(desc.begin(), desc.end(), ostream_iterator<string>(output_file1, "\n"));
}
任何人都可以指出我正确的方向吗?
谢谢!
答案 0 :(得分:0)
您需要跟踪输入时输入的ID。然后索引将匹配。
int IDCnt = 0;
while (getline(inputFile, line))
{
if (is_number(line))
{
ids.push_back(line);
IDCnt++;
}
else {
if(IDCnt > desc.size()) desc.push_back(line);
else desc[IDCnt-1] = desc[IDCnt-1] + line;
}
}