[英]C++ Splitting strings from ifstream and placing them in seperate arrays
我正在用C ++编写程序,以从文本文件(日期和当天的高/低温度)中获取输入,将日期和温度分成两个单独的数组。 我的工作已经结束; 但是,我似乎无法适当地分割字符串。 我尝试使用getline()和.get使用其他方法,但是我需要将字符串保留为STRINGS,而不是chars数组。 我已经使用vector和strtock调查并阅读了类似问题的答案,只有一个问题:我还是很新,而且研究的越多,我就越困惑。
如果要使用该方法解决问题,则只需要指出正确的使用方法即可。 抱歉,我很容易被所有解决C ++问题的不同方法所淹没(这就是我非常喜欢使用它的原因。))!
文字样本:
等等
日期需要存储在一个数组中,而温度(高和低)都存储在另一个数组中。
这是我所拥有的(未完成,但仍供参考)
int main()
//Open file to be read
ifstream textTemperatures;
textTemperatures.open("temps1.txt");
//Initialize arrays.
const int DAYS_ARRAY_SIZE = 32,
TEMPS_ARRAY_SIZE = 65;
string daysArray[DAYS_ARRAY_SIZE];
int tempsArray[TEMPS_ARRAY_SIZE];
int count = 0;
while(count < DAYS_ARRAY_SIZE && !textTemperatures.eof())
{
getline(textTemperatures, daysArray[count]);
cout << daysArray[count] << endl;
count++;
}
感谢大家。
尝试以下
#include <iostream>
#include <fstream>
#include <sstream>
//...
std::ifstream textTemperatures( "temps1.txt" );
const int DAYS_ARRAY_SIZE = 32;
std::string daysArray[DAYS_ARRAY_SIZE] = {};
int tempsArray[2 * DAYS_ARRAY_SIZE] = {};
int count = 0;
std::string line;
while ( count < DAYS_ARRAY_SIZE && std::getline( textTemperatures, line ) )
{
std::istringstream is( line );
is >> daysArray[count];
is >> tempsArray[2 * count];
is >> tempsArray[2 * count + 1];
}
这是一个读取格式化输入的简单程序。 您可以轻松地将std :: cin替换为std :: ifstream,并使用循环内的数据执行任何所需的操作。
#include <iostream>
#include <string>
#include <vector>
int main ()
{
std::vector<std::string> dates;
std::vector<int> temperatures;
std::string date;
int low, high;
while ((std::cin >> date >> low >> high))
{
dates.push_back(date);
temperatures.push_back(low);
temperatures.push_back(high);
}
}
这是由std::cin
的operator>>
,该operator>>
可以读取遇到的第一个空格(制表符,空格或换行符)并将值存储在正确的操作数内。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.