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++ c++;在一个文件中转换文本,如123123和12312,并按12312排序_C++_String_Numbers - Fatal编程技术网

C++ c++;在一个文件中转换文本,如123123和12312,并按12312排序

C++ c++;在一个文件中转换文本,如123123和12312,并按12312排序,c++,string,numbers,C++,String,Numbers,将文本转换为文件中的12312和12312,并将其排序为12312。我正在从包含此输入的文件中获取输入。我打印了这些文本,但无法对其排序。我使用atoi函数将其转换为数字,但它会打印0。请帮忙 一二三 五七 零一二 三二一 #include<iostream> #include<string.h> #include<fstream> #include <stdlib.h> using namespace std; int findno(char *

将文本转换为文件中的12312和12312,并将其排序为12312。我正在从包含此输入的文件中获取输入。我打印了这些文本,但无法对其排序。我使用atoi函数将其转换为数字,但它会打印0。请帮忙

一二三

五七

零一二

三二一

#include<iostream>
#include<string.h>
#include<fstream>
#include <stdlib.h>
using namespace std;
int findno(char * a);

ifstream fin;
int i=0,k=0,j=0,count=0,s=0;
char ar[100],ch,str[100],no[100][100];
int main(int argc,char * argv[])
{
  fin.open(argv[1]);
  fin.getline(ar,100);

  while(i<strlen(ar))
  {
    if(ar[i]!=' ')
    {
      str[k++]=ar[i];
      i++;
      if(i==strlen(ar))
      {
        fin.getline(ar,100);
        no[s][j++]=findno(str);
        cout<<(int)no[s][j-1]<<"\n";
        i=0;
        k=0;
        j=0;
        s++;
      }
      continue;
    }
    if(ar[i]==' ')
    {
      no[s][j++]=findno(str);
      cout<<(int)no[s][j-1];
      i++;
      k=0;
    }
  }

  cout<<atoi(no[0])<<" ";

  fin.close();
  return 0;
}

int findno(char * a)
{
  if(a[0]=='z')
    return 0;
  if(a[0]=='o')
    return 1;
  if(a[0]=='t' && a[1]=='w')
    return 2;
  if(a[0]=='t' && a[1]=='h')
    return 3;
  if(a[0]=='f' && a[1]=='o')
    return 4;
  if(a[0]=='f' && a[1]=='i')
    return 5;
  if(a[0]=='s' && a[1]=='i')
    return 6;
  if(a[0]=='s' && a[1]=='e')
    return 7;
  if(a[0]=='e')
    return 8;
  if(a[0]=='n')
    return 9;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int findno(字符*a);
流鳍;
int i=0,k=0,j=0,count=0,s=0;
char-ar[100],ch,str[100],no[100][100];
int main(int argc,char*argv[])
{
财务公开(argv[1]);
财务指标(ar,100);
而
零一二等于十二

您可以使用关于显示非零字符或不显示非零字符的标志信号,如下例所示。在读取下一个单词之前,将标志设置为false,如果您发现一些非零字符,则将标志设置为true

bool flag = false;
int tmp;
while(i<strlen(ar))
{
if(ar[i]!=' ')
{
  str[k++]=ar[i];
  i++;
  if(i==strlen(ar))
  {
    fin.getline(ar,100);
    tmp=findno(str);

    if (flag || (tmp > 0))
    {
      no[s][j++] = tmp;
      cout << tmp <<"\n";          
    }
    i=0;
    k=0;
    j=0;
    flag = false;
    s++; 
   }
   continue;
}
if(ar[i]==' ')
{
  tmp=findno(str);      
  if (tmp > 0)
    flag = true;
  if (flag)
  {
    no[s][j++] = tmp;
    cout << tmp;
  }
  i++;
  k=0;
}
}
bool标志=false;
int tmp;
而(i)(0)
{
否[s][j++]=tmp;

C太多了,没有读过。首先是简单的字符串到数字,然后是普通的算术,将连续的数字转换成数字,然后输入例如。然后,你可以学习如何使用调试器,这将是非常宝贵的。因为有了调试器,你可以逐行检查代码,同时观察变量的值s、 看看代码到底做了什么。@JoachimPileborg:从
12
123
之前排序这一事实来看,我们仍然无法判断是按字典还是按数字排序。@Maneyy:永远不要使用
atoi
。不仅没有可靠的方法来检测失败的解析,有些失败还会导致未定义的行为。Get习惯于使用
strtol