我尝试将.txt
文件中的文本导入到一个二维字符串数组中,但似乎没有效果。.txt
文件中的每一行都有三个需要复制的值/元素。
这是代码:
// i am only allowed to use these libraries.
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
int main()
{
const int rows = 38;
const int columns = 3;
string companies[rows][columns];
// Inputting file contents
ifstream file;
file.open("companies.txt");
while(!file.eof())
{
for(int i = 0; i < 38; i++)
{
for(int j = 0; j < 3; j++)
{
getline(file, companies[i][j], ',');
}
}
}
file.close();
cout << endl << endl;
// displaying file contents using for loop
for(int i = 0; i < 38; i++)
{
for(int j = 0; j < 3; j++)
{
cout << companies[i][j] << endl << endl;
}
}
cout << endl << endl;
return 0;
}
这是我要导入的数据:
Symbol,Company Name,Stock Price
ATRL,Attock Refinery Ltd.,171.54
AVN,Avanceon Ltd. Consolidated,78.1
BAHL,Bank AL-Habib Ltd.,54.97
CHCC,Cherat Cement Company Ltd.,126.26
1条答案
按热度按时间ippsafx71#
您的代码的一个问题是您只寻找
,
作为分隔符,而根本不处理行之间的换行符。通常,我会建议将每一行读入std::istringstream
,然后使用std::getline(',')
解析每个流,但您说不允许使用<sstream>
,因此您只需使用std::string::find()
和std::string::substr()
手动解析每行。而且,使用
while(!file.eof())
是just plain wrong。不仅因为这是使用eof()
的错误方法,而且因为您的for
循环处理所有数据,所以while
循环实际上没有什么可做的。请尝试以下内容:
Online Demo