Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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++ 比较字符串中的数字和int中的数字?_C++_String_Numbers_Int_Compare - Fatal编程技术网

C++ 比较字符串中的数字和int中的数字?

C++ 比较字符串中的数字和int中的数字?,c++,string,numbers,int,compare,C++,String,Numbers,Int,Compare,我正在尝试制作一个程序,该程序将打开一个包含此格式名称列表的txt文件(忽略项目符号): 3马克 4拉尔夫 1版 2凯文 并将根据前面的编号创建一个包含有组织名称的文件: 1版 2凯文 3马克 4拉尔夫 我想我在第40行遇到了问题,我试图将存储在字符串中的数字与存储在int中的数字进行比较 我想不出任何其他方法来解决这个问题,任何建议都会很好 #包括 #包括 #包括 #包括 使用名称空间std; int main() { 如果输入; 流出的液体; 弦线; 字符串集合[5]; 矢量线;

我正在尝试制作一个程序,该程序将打开一个包含此格式名称列表的txt文件(忽略项目符号):

  • 3马克
  • 4拉尔夫
  • 1版
  • 2凯文
并将根据前面的编号创建一个包含有组织名称的文件:

  • 1版
  • 2凯文
  • 3马克
  • 4拉尔夫
我想我在第40行遇到了问题,我试图将存储在字符串中的数字与存储在int中的数字进行比较

我想不出任何其他方法来解决这个问题,任何建议都会很好

#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
如果输入;
流出的液体;
弦线;
字符串集合[5];
矢量线;
向量换行;
in.open(“infle.txt”);
if(in.fail())
{

cout使用调试器会告诉您哪里出错,但让我强调一下错误:

if (collection[x][0] == j)
您需要一个类似于
3 Mark
的字符串。此字符串的第一个字符是
'3'
,但其ASCII值为
51
,这是您在尝试使用它时得到的数值。按此方式!这永远不会等于
j
,除非您的文件中有很多行,然后您的搜索结果是stem根本无法像您所希望的那样工作。您需要将该字符转换为整数,然后进行比较

C++提供了许多通过流处理数据的方法,包括解析简单的数据文件和将文本转换为数字,反之亦然。下面是一个简单的独立函数,它可以像您一样读取数据文件(仅使用任意文本,包括每行数字后的空格)


再次,对迭代器和容器如何工作的全面介绍远远超出了这个答案的范围,但是因特网上不缺少介绍C++的指南。祝你们好运!

你试着把它们投射出来吗?到底是哪种语言?对不起,我应该把它包含在帖子里。它是C++。我只是试着把变量j铸造一下。您需要有序的集合或其他称为集合类对象的对象,以便可以存储已排序的名称记录(使用std::sort object)。请尝试使用这些工具,如果您仍然遇到问题,请更新您的代码。只是尝试不为您编写代码,因为您已经展示了自己编写代码的能力。我还没有使用集合,所以我不太确定是否遵循。您能给我一个示例吗?因此,完整的“如何使用c++”答案在这里并不实用,但让我回顾并编辑我的帖子a稍微简化一些事情。感谢您深思熟虑的回复。我只是最近才了解了structs,所以我还没有完全理解。例如,如果我有一个列表,其中包含每行的名字和姓氏(例如3 Mark Wahlberg),我会继续使用in还是使用getline?很抱歉,直到5分钟过去,我才能够编辑我的上一个回复。我没有读你写的便条,请忽略最后评论的第二部分。@Ron,我已经编辑了一点代码,并简化了一些内容。如果你想用wh阅读整段文本,你是对的在这些文件中,您需要使用
std::getline
,或者如果您知道数据文件的格式是合理的,您可以在>>firstname;在>>lastname
中执行
#include <algorithm>

// snip

struct file_entry { int i; std::string text; };

std::vector<file_entry> parse_file(std::istream& in)
{
    std::vector<file_entry> data;

    while (!in.eof())
    {
      file_entry e;

      in >> e.i; // read the first number on the line
      e.ignore(); // skip the space between the number and the text
      std::getline(in, e.text); // read the whole of the rest of the line

      data.push_back(e);
    }

    return data;
}
int sort_file_entry(file_entry a, file_entry b)
{
    return a.i < b.i;
}

int main()
{
    // set up all your streams, etc.

    std::vector<file_entry> lines = parse_file(in);

    std::sort(lines.begin(), lines.end(), sort_file_entry);

    // now you can write the sorted vector back out to disk.
}