gpt4 book ai didi

c++ - 使用 C++ 逐个选项卡拆分字段

转载 作者:行者123 更新时间:2023-11-30 04:05:34 26 4
gpt4 key购买 nike

给定一个文本文件(file.txt):

1234567A (THIS IS TAB) Peter, ABC (THIS IS TAB) 23523456
1345678A (THIS IS TAB) Michael CDE (THIS IS TAB) 23246756
1299283A (THIS IS TAB) Andy (THIS IS TAB) 98458388

ifstream inFile;
string s;
string id;
string name;
int phoneNo;
inFile.open("file.txt");
while (!inFile.eof()) {
getline(inFile, s, '\t');
}

如何将一行的字符串提取到不同的字段中?例如,当我打印 s 时,它给出 1234567A。我已经尝试了一些在 Stackoverflow 中找到的技术,但是,我无法实现目标。

谢谢。


我还想问的一件事是第三个字段(即 phoneNo)是否由 1-3 个元素组成,

1234567A (THIS IS TAB) Peter, ABC (THIS IS TAB) 23523456 (THIS IS TAB) 12312312
1345678A (THIS IS TAB) Michael CDE (THIS IS TAB) 23246756
1299283A (THIS IS TAB) Andy (THIS IS TAB) 98458388 (THIS IS TAB) 123123123 (THIS IS TAB) 123123123

如何区分phoneNo的号码?

最佳答案

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>


//...

std::ifstream inFile( "file.txt" );

std::string record;

while ( std::getline( inFile, record ) )
{
std::istringstream is( record );

std::string id;
std::string name;
int phoneNo = 0;

is >> id >> name >> phoneNo;
}

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>


//...

std::ifstream inFile( "file.txt" );

std::string record;

while ( std::getline( inFile, record ) )
{
if ( record.find_first_not_of( " \t" ) == std::string::npos ) continue;

std::istringstream is( record );

std::string id;
std::string name;
int phoneNo = 0;

is >> id >> name >> phoneNo;
}

例如,如果字段名称由多个单词组成,而不是 operator >>你应该再次使用函数 std::getline例如

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>


//...

std::ifstream inFile( "file.txt" );

std::string record;

while ( std::getline( inFile, record ) )
{
if ( record.find_first_not_of( " \t" ) == std::string::npos ) continue;

std::istringstream is( record );

std::string id;
std::string name;
int phoneNo = 0;

std::getline( is, id, '\t' );
std::getline( is, name, '\t' );
is >> phoneNo;
}

如果手机数量可变,您应该使用 std::vector<unsigned int>std::vector<std::string>并按以下方式更改函数的最后一条语句

   while ( is >> phoneNo ) v.push_back( phoneNo );

其中 v 可以定义为例如 std::vector<unsigned int>

关于c++ - 使用 C++ 逐个选项卡拆分字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23238871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com