Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从包含空格和换行符的文本文件中提取特定数据?_C++ - Fatal编程技术网

C++ 如何从包含空格和换行符的文本文件中提取特定数据?

C++ 如何从包含空格和换行符的文本文件中提取特定数据?,c++,C++,我想从一个大的文本文件中提取和分析数据。数据包含浮点数、整数和字 我想到的方法是使用std::getline()提取完整的行(直到换行)。然后从之前提取的行中提取单个数据(提取到空白,然后重复) 到目前为止,我有: int main( ) { std::ifstream myfile; myfile.open( "example.txt", std::ios::in ); if( !(myfile.is_open()) ) { std::cout <&

我想从一个大的文本文件中提取和分析数据。数据包含浮点数、整数和字

我想到的方法是使用std::getline()提取完整的行(直到换行)。然后从之前提取的行中提取单个数据(提取到空白,然后重复)

到目前为止,我有:

int main( )
{
    std::ifstream myfile;
    myfile.open( "example.txt", std::ios::in );

    if( !(myfile.is_open()) )
    {   std::cout << "Error Opening File";
        std::exit(0);   }

    std::string firstline;


    while( myfile.good() )
    {
        std::getline( myfile, firstline);
        std::cout<< "\n" << firstline <<"\n";
    }

    myfile.close();
    return 0;
}
int main()
{
std::ifstream myfile;
open(“example.txt”,std::ios::in);
如果(!(myfile.is_open()))

{std::cout对于第一个问题,您可以这样做:

while( myfile.good() )
{
    std::getline( myfile, firstline);
    std::cout<< "\n" << firstline <<"\n";

    std::stringstream ss(firstline);
    std::string word;
    while (std::getline(ss,word,' '))
    {
      std::cout << "Word: " << word << std::endl;
    }

}
while(myfile.good())
{
std::getline(myfile,firstline);

对于第一个问题,您可以这样做:

while( myfile.good() )
{
    std::getline( myfile, firstline);
    std::cout<< "\n" << firstline <<"\n";

    std::stringstream ss(firstline);
    std::string word;
    while (std::getline(ss,word,' '))
    {
      std::cout << "Word: " << word << std::endl;
    }

}
while(myfile.good())
{
std::getline(myfile,firstline);

std::cout您可以使用
std::stringstream
解析数据,让它担心跳过whitspace。由于输入行中的每个元素似乎都需要额外的处理,只需将它们解析为局部变量,并在完成所有后处理后将最终结果存储到数据结构中

#include <sstream>
#include <iomanip>


std::stringstream templine(firstline);

std::string passfail;
float floatvalue1;
std::string timestr;
std::string namestr;
float floatvalue2;

//  split to two lines for readability
templine >> std::skipws; // no need to worry about whitespaces
templine >> passfail >> timestr >> floatvalue1 >> namestr >> floatvalue2;

您可以使用
std::stringstream
解析数据,让它担心跳过whitspaces。因为输入行中的每个元素似乎都需要额外的处理,所以只需将它们解析为局部变量,并在所有后处理完成后将最终结果存储到数据结构中

#include <sstream>
#include <iomanip>


std::stringstream templine(firstline);

std::string passfail;
float floatvalue1;
std::string timestr;
std::string namestr;
float floatvalue2;

//  split to two lines for readability
templine >> std::skipws; // no need to worry about whitespaces
templine >> passfail >> timestr >> floatvalue1 >> namestr >> floatvalue2;

getline
有另一个参数指定分隔符。那么在std::getline(myfile,firstline)之后使用另一个getline(firstline“”)?是的,我在回答中给出了一个例子。
getline
有另一个参数指定分隔符。那么在std::getline(myfile,firstline)之后使用另一个getline(firstline“”)是的,我在我的回答中展示了一个例子。如果你对C++足够满意,你可以创建一个可以很好地包装所有数据的类,但是结构也可以做到这一点,尽管它更为简单。如果你对C++足够满意,你可以创建一个可以很好地包装所有数据的类,但是结构也可以做到这一点,尽管它更为简单。