C++编程,从TXT文档中读取数字

比如说TXT文档两行如下:
flkasjlkj 12 kflasjlk 15
lkgajkl 53 klgsaj 35
我想读取其中的数字,我写的代码是:
#include<iostream>
#include<fstream>

using namespace std;

int main()
{
ifstream infile("save.txt");
int a,b,c,d;
infile >> a >> b>>c>>d;
cout<<a<<b<<c<<d;
return 1;
}
但是读取的int全都是没有意义的,怎么样写才能把12 15 53 35分别赋给a b c d?

#include <iostream>
#include <string>
#include <vector>
#include<fstream>
#include <sstream>
using namespace std;
// 判断一个字符串是否为一个数字,如果是返回它
bool JudgeNum(string str,int& iTmp)
{
 bool bNum = true;
 string::size_type szSize = str.size();
 for (int i=0;i<szSize;++i)
 {
  char ch = str.at(i);
  if ((ch < '0') || (ch > '9'))
  {
   bNum = false;
   break;
  }
 }
 if (bNum)
 {
  istringstream iss(str);
  iss >> iTmp;
 }
 return bNum;
}
int main()
{
 ifstream infile("F:\\save.txt");
 int a,b,c,d;
 vector<int> iVec;
 string strTmp;
 int iTmp = 0;
 if (!infile)
 {
  return -1;
 }
 while(getline(infile,strTmp,' '))    // 以空格为分隔符,读取每一个词
 {
  if (JudgeNum(strTmp,iTmp))
  {
   iVec.push_back(iTmp);
  }
 }
 vector<int>::size_type stCnt = iVec.size();
 if (stCnt >= 4)
 {
  a = iVec.at(0);
  b = iVec.at(1);
  c = iVec.at(2);
  d = iVec.at(3);
  cout << a << " " << b << " " << c << " " << d;
 }
 getchar();
 return 1;
}

这个可以获取到文本中任意的数字,但文本里的数字与其他字符之间必须有空格分隔,仅供参考!

其他情况,LZ可自行参考修改。这里只提供个思路.

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-06

可以一个字符一个字符检查,读取连续的数字,然后转化为数字。

#include<fstream>
#include<iostream>
#include<string>
#include<algorithm>

int main(){
    std::ifstream istr("test.txt");
    if(istr.is_open()){
        std::string tmp;
        while(getline(istr, tmp)){
            std::string::const_iterator p, q = tmp.begin(), end = tmp.end();
            
            while((p = find_if(q, end, isdigit)) != end){//查看该行是否还有数字
                q = find_if_not(p, end, isdigit);//查找最后一个不是数字的位置
                std::cout<<stoul(tmp.substr(distance(tmp.cbegin(), p), distance(p, q)))<<" ";//将p~q的字串转化为数字
            }
        }
    }
    
    return 0;
}

第2个回答  2013-11-06

你好!!

    因为你的文件内含有字符串,所以不能这样读取

程序改了,你看看吧,满意请采纳

#include<iostream>
#include<fstream> 

using namespace std;

int main()
{
ifstream infile("save.txt"); 
string a1,b1,c1,d1;   // 读取4个字符串 
int a,b,c,d;          // 读取4个数字 
infile >> a1 >> a >> b1 >> b >> c1 >> c >> d1 >>d;
cout<<a<<b<<c<<d;
return 1;
}

追问

这样对这个例子来说是可以了!不过我碰到的实际情况是两个数字之间有不固定的字符,不知道这样的情况怎么解决?

追答

那你就把实际文件内容发上来,你这样来问,谁知道怎么处理

本回答被提问者采纳

C++编程,从TXT文档中读取数字
include <iostream>#include <string>#include <vector>#include<fstream>#include <sstream>using namespace std;\/\/ 判断一个字符串是否为一个数字,如果是返回它bool JudgeNum(string str,int& iTmp){ bool bNum = true; string::size_type szSize = str.size(); for (int i=0;i<szSize;...

c++中如何读取txt文件的内容
解析:1.如果只是读文件,那用fopen("文件名",r)不就可以读了吗?2.但是按照我的理解.你估计不是读文件那么简单吧.你是想在文件中定义一些数据,然后从文件中读入到程序里吧?如果是这样的话,那写成配置文件吧.读配置文件的方法呢,如果是读整型,用GetPrivateProfileInt()读字符型,用GetPrivateProfileSt...

用c++语言读取txt文件的列数据
include<iostream>#include<fstream>#include<string>#include<iomanip>using namespace std;int main(){ float n1[100];float n2[100];ifstream inFile;int count; inFile.open("1.txt");for (count=0; count<4;count++) \/\/读数据 {inFile>>n1[count]>>n2[count];} inFile.close();...

C++编程读取TXT数据,将其赋值到数组,而后进行计算
最简单的方式是用freopen,使用了这个函数之后所有的cin\/cout就会从文件中读出或者写入,或者也可以用fstream;include <iostream>#include <cstdio>#define maxn 10000using namespace std;struct m{ int x; int y; int z;}a[maxn];int main(){ freopen("\/*文件名*\/","r"\/*代...

用c++语言读取txt文件的列数据
1.用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。2.例程: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> #include<string.h> void main() { char a[100],b[100],c[100]; int i=3,j=4,k=0; \/\/第...

C++编程。怎么从文本文件中读取数据并存入二维数组
int main(){int x[1080][2];int j,i,n=0;FILE *fp;fp=fopen("ss.csv","r");if(!feof(fp)){cout << " open file" << endl;while(1){fscanf(fp,"%x,%x",&x[n][0],&x[n][1]);if (feof(fp))break;n++;}}elsecout << "Cannot open file" << endl;fclose(fp);p...

编程类,在VC中用C++编写程序,按行读取txt中的数据,并显示,请各位大神来...
int row;CString result;\/\/生成一个对话框 lpszOpenFile = new CFileDialog (TRUE,"","",OFN_FILEMUSTEXIST |OFN_HIDEREADONLY , "文件类型(*.txt)|*.txt|所有文件(*.*)|*.*|");if(lpszOpenFile->DoModal() == IDOK )\/\/假如点击对话框确定按钮 { filePathName = lpszOpenFile->Get...

如何把txt文件中的数据输入C++程序,并在程序中建立数组矩阵进行计算...
1.先定义一个m*n数组(局部或者全局的)2.打开第一个文件,定位到你要读取的数据的位置,读取之,把他存到刚才申请的数组的适合的位置就可以了。然后再打开第二个文件按同样操作即可。可以试一试,呵呵

...c++编程,实现文档的读取。就是把一个TXT文档的内容读出来。求完整...
这个是VC6的,VS2008也差不多:打开VC6,新建工程->MFC AppWizard(exe),假设工程名为Abc->选择Single Document,在第4步里点击Advanced,在File Extension里填上txt,在第6步里,把CAbcView的父类改为CEditView,点Finish即可。这样编译生成的程序已经是一个功能完整的文本编辑器了。

C++怎么读取txt文件指定的一行或计算出某一行的偏移量。谢谢大家了,这...
类型,那么这个类就只能存这种类型了,其他就无能为力了.因为C++里有万能指针 类型,而没有万能类型,如果想改为你说的那样,可以用摸板,王艳平老师其实 也写了你这个类的子类,再也把它摸版化了.就在你这个类的后面几页.回答第四个问题:<不用回答了> 回答第五个问题:那不就是指针类型的了吗?

相似回答