さまざまなデータ型(int、文字列)を持つ変数に文字列を解析する必要があります。C++異なるデータ型変数に文字列をパースする
問題の文字列は、ファイル内の行から取得されました。
inFile >> var1 >> var2 >>などと似た関数があるのでしょうか。私は文字列のために使用することができます。以下はファイルからの完全な行です。
2016年12月6日の "政府と大企業との近親相姦の関係は暗闇の中で繁栄する。〜ジャック・アンダーソン[4]" 0 3 39、青、白PATRICK BARDWELLの[email protected]
Iすでに「2016/12/6」、「s」、および引用符の間のすべてをinFile >>;を使用する変数に割り当てました。また、二重引用符が最後に出現した後にすべてを取り出し、それを文字列restOfLineに格納しました。今、restOfLineを各値(0,3,39、青、白、Patrick、Bardwell、[email protected]はすべて別々の変数にする必要があります)の変数に解析したいと思います。 inFile >>のようなメソッドがありますか?私もrestOfline.find()とrestOfLine.substr()でそれらを分離しようとしましたが、それを理解することはできませんでした。同様に、私が現在のコードよりも効率的に行全体から各値を分けることができるなら、私はそれを好むでしょう。現在のコードは以下です。どんな助けも大歓迎です。
int main()
{
// Declare variables
string userFile;
string line;
string date;
char printMethod;
string message;
int numMedium;
int numLarge;
int numXL;
string shirtColor;
string inkColor;
string firstName;
string lastName;
string customerEmail;
string firstLine;
string restOfLine;
// Prompt user to 'upload' file
cout << "Please input the name of your file:\n";
cin >> userFile;
fstream inFile;
inFile.open(userFile.c_str());
// Check if file open successful -- if so, process
if (inFile.is_open())
{
getline(inFile, firstLine); // get column headings out of the way
cout << firstLine << endl << endl;
while(inFile.good())
// while we are not at the end of the file, process
{
getline(inFile, line);
inFile >> date >> printMethod; // assigns first two values of line to date and printMethod, respectively
int pos1 = line.find("\"");
// find first occurrence of a double quotation mark and assign position value to pos1
int pos2 = line.rfind("\"");
// find last occurrence of a double quotation mark and assign position value to pos2
string message = line.substr(pos1, (pos2 - pos1));
// sets message to string between quotation marks
string restOfLine = line.substr(pos2 + 2);
// restOfLine = everything after the message -- used to parse
}
inFile.close();
}
// If file open failure, output error message, exit with return 0;
else
{
cout << "Error opening file";
}
return 0;
}
[stringstream](http://stackoverflow.com/questions/20594520/what-exactly-does-stringstream-do)sは既に知っていますか? –