我正在逐行讀取文本文件,其內容用逗號分隔,並通過將getline()解壓縮到我的stringColor,stringName,stringReward變量中進行解析,傳入我的stringstream ss,然後傳遞給我的tileArray指針數組到相應的int,string和int變量中。將字符串解析爲字符串指針數組時出現分段錯誤錯誤
我的程序編譯,但是當我運行它時,它會生成一個分段錯誤11,看起來似乎是我將行內容傳遞到stringstream的地方。我找不到問題出在哪裏......
也許如果有人能指出錯誤的地方,我會非常感激。
這是我試圖從文本文件中讀入的每一行的格式。 它應該能夠讀取任意數量的行。
0,瓷磚1,5-
4,瓷磚2,0
2,瓷磚4,1
#include <stdio.h>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct
{
int color;
string name;
int reward;
}tile;
int main()
{
string line;
int numberOfLines = 0;
ifstream inputFile("inputFile.txt");
if (inputFile.is_open())
{
while(getline(inputFile, line))
{
++numberOfLines; //value to set tile amount
cout << numberOfLines <<endl;
}
tile *tileArray = new tile[numberOfLines];
string stringColor, stringName, stringReward; //declare these values as strings and later convert
stringstream ss; //stringstream variable to convert string variable
for(int n = 0; n<(numberOfLines-1); n++)
{
getline(inputFile, stringColor, ','); //delimiter at first comma
cout << stringColor << endl;
getline(inputFile, stringName, ','); // delimiter at second
cout << stringName << endl;
getline(inputFile, stringReward); // stop at the end of the line
cout << stringReward << endl;
ss<<stringColor;
ss>>tileArray[n]->color;
ss.str("");
ss.clear();
cout << tileArray[n]->color;
ss<<stringName;
ss>>tileArray[n]->name;
ss.str("");
ss.clear();
cout << tileArray[n]->name;
ss<<stringReward;
ss>>tileArray[n]->reward;
ss.str("");
ss.clear();
cout << tileArray[n]->reward;
}
}
return 0;
}
哪裏的指針數組?你有一個'tile'數組,但我沒有看到指針數組。順便說一句,指針數組將是:'新的瓦* [24];' – 2015-01-26 18:13:12
也許如果你可以使用調試器,並告訴我們哪一行導致的問題。 – 2015-01-26 18:13:49
我建議你刪除數組並使用'std :: vector'。你會有更少的問題。 – 2015-01-26 18:14:43