C++ Stringstream到字符串逻辑C++;
标题.hC++ Stringstream到字符串逻辑C++;,c++,stringstream,C++,Stringstream,标题.h #include <iostream> #include <vector> class CombatLine{ std::stringstream Line; std::vector<std::string> TokenLine; void SetLine(std::string s){ Line<<s; } public: void SetTo
#include <iostream>
#include <vector>
class CombatLine{
std::stringstream Line;
std::vector<std::string> TokenLine;
void SetLine(std::string s){
Line<<s;
}
public:
void SetTokenLine(){
int i=0;
while(i<5){
Line>>TokenLine[i];
i++;}
TokenLine.resize(i);
for(int j=0;j<5;j++)
cout<<TokenLine[j];}
这会生成,但我得到这个运行时错误,/cygdrive/C/Program Files/NetBeans 6.9.1/ide/bin/nativeexecution/dorun.sh:line 33:4500分段错误sh“$”
我知道这与我如何操作SetTokenFile中的字符串和流有关,但我似乎无法确定是什么
这是一个大项目的一小部分。总的来说,我将解析一个动态文本文件,然后对整个文件的内容进行比较。您不能直接写入
TokenLine[I]
,因为它在CombatLine
构造函数中初始化为空的向量。如果在读取每一行时构建向量,则不需要调整大小
试试这个:
void SetTokenLine(){
int i=0;
string nextLine;
while(i<5){
Line>>nextLine;
TokenLine.push_back(nextLine);
i++;}
for(int j=0;j<5;j++)
cout<<TokenLine[j];}
您不能直接写入TokenLine[i]
,因为它在CombatLine
构造函数中被初始化为空的vector
。如果在读取每一行时构建向量,则不需要调整大小
试试这个:
void SetTokenLine(){
int i=0;
string nextLine;
while(i<5){
Line>>nextLine;
TokenLine.push_back(nextLine);
i++;}
for(int j=0;j<5;j++)
cout<<TokenLine[j];}
您需要先调整令牌行的大小,然后写入内容,或者更好的习惯是使用push_-back,这将在必要时调整大小。您需要先调整令牌行的大小,然后写入内容,或者更好的习惯是使用push_-back,如果需要,将调整大小。在格式化代码时,请使用标记代码块而不是HTML;否则,在格式化代码时,请使用标记代码块而不是HTML;否则,像每个
CombatLine::CombatLine() : TokenLine(5)
{
}