同时使用两个 ifstream和 freopen 第二个就会失去效用,不知道错在了哪里!

1. 使用freopen打开:

bool CPicToolsDlg::readTxt2Seq(
std::string TxtName, std::vector<float > &Seq )
{
std::string TestTxt(TxtName); //
freopen(TestTxt.c_str(),"r",stdin);// 打开文件!
float ViewValue;
Seq.resize(0);
char ch; while(std::cin )
{
std::cin >> ViewValue;
Seq.push_back(ViewValue); } ///fin.close();
fclose(stdin);
return true;
}

2. 使用C格式的fopen打开

bool CPicToolsDlg::readTxt2Seq1(
std::string TxtName, std::vector<float > &Seq )
{
std::string TestTxt(TxtName); // FILE *fp = NULL;
if ((fp = fopen(TestTxt.c_str(), "r")) == NULL){
printf("Error in open file %s\n", TestTxt.c_str());
return false;
}
else{
printf(" file opened%s\n", TestTxt.c_str());
} //三元组,使用三元组逐个写入
float ViewValue;
Seq.resize(0); //char Temp[100];
//if (fin.is_open() )
//{
// fin.getline(Temp,100);
// int i = 0;
// while(i< 100 && Temp[i] !="\0" )//寻址级别不同,到底问题出在哪里了!
// {
// float ViewValue(Temp[i] );
// Seq.push_back(ViewValue);
// ++ i;
// }
//} //流出现问题
//if (fin.is_open() ) {
// while( fin.get(ch) )//寻址级别不同,到底问题出在哪里了!
// {
// if (ch !=(int)(" ") ){
// float ViewValue(ch );
// //fin >> ViewValue; //利用 重定向输入 浮点值
// //std::cin >>ViewValue2;
// //std::cin >>ViewValue3;
// //P.x = ViewValue;
// //P.y = ViewValue2;
// //P.z = ViewValue3;
// Seq.push_back(ViewValue);
// }
// }
//} while (!feof(fp))//首先读取点云数据到点表points同时指定点对应的id:
{
int ret = fscanf(fp,"%f", &ViewValue);
Seq.push_back(ViewValue);
}//printf("%d\n", n); fclose(fp);
//fin.close();
//fclose(stdin);
return true;
}

使用C语言是注意事项,int ret = fscanf(fp,"%lf", &ViewValue);   lf 和f 有何不同之处?

3.修改后的代码,第一个使用freopen,第二个使用fopen可以正常运行了

void CPicToolsDlg::OnBnClickedButtonKmptest()
{
//字符串匹配
//打开目录文件
CFileDialog FileDlg(
TRUE, _T("*.pcd"), NULL,
OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
_T("*.txt|*.txt| *.pcd|*.pcd| All Files (*.*) |*.*||"), NULL);//选取约定! FileDlg.m_ofn.lpstrTitle = _T("打开待显示序列文本!!!"); // 打开文件对话框的标题名 if (FileDlg.DoModal() != IDOK) {
MessageBox("打开文件失败!!!请重新检测", "提示", 0);
return ;
} CString FilePath = FileDlg.GetPathName();
std::string MyFileName = FilePath; std::vector<float > Seq(0);
this->readTxt2Seq(MyFileName,Seq); CFileDialog FileDlg2(
TRUE, _T("*.pcd"), NULL,
OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
_T("*.txt|*.txt| *.pcd|*.pcd| All Files (*.*) |*.*||"), NULL);//选取约定! FileDlg2.m_ofn.lpstrTitle = _T("打开待显示模式文本!!!"); // 打开文件对话框的标题名 if (FileDlg2.DoModal() != IDOK) {
MessageBox("打开文件失败!!!请重新检测", "提示", 0);
return ;
} CString FilePath2 = FileDlg2.GetPathName();
std::string MyFileName2 = FilePath2; std::vector<float > P(0);
this->readTxt2Seq1(MyFileName2,P); const std::vector<float> Pattern(P); int Pos =
this->Kmptest(Seq ,Pattern ); }

C++多个文本读取问题的更多相关文章

  1. opencv从txt文本读取像素点并显示

    opencv从txt文本读取像素点并显示 文本储存格式为每行一个像素点,排列为RGB.每帧图像的帧头为65535.  如下图所示 废话不多说,代码如下: // #include <iostrea ...

  2. 批量文本读取URL获取正常访问且保留对应IP

    #coding=utf-8 import sys import requests for i in range(3000,4999,1): url = 'http://192.168.88.139:8 ...

  3. 接口测试工具-Jmeter使用笔记(六:从文本读取参数)

    使用场景:测试一个接口并发处理数据的能力,并且每次请求传入的参数都要不同. 解决方法--- CSV Data Set Config 列举一个实例,步骤中会侧重读取参数操作的说明,其他有疑问的步骤请查阅 ...

  4. 自动化测试-19.selenium定位之通过JS修改html写入日期数据以及从文本读取数据实战

    # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.support.select import ...

  5. python3文本读取与写入常用代码

    创建文件夹: import os import shutil def buildfile(echkeyfile): if os.path.exists(echkeyfile): #创建前先判断是否存在 ...

  6. JAVA本地文本读取---解决中文乱码

    import java.io.*; public class ReadFile { public static void main(String[] args) { try { File file = ...

  7. 微信小程序-textarea中的文本读取以及换行问题

    今天客户那边要求textarea中输入的问题可以按回车键换行,而我使用的是bindinput获取值,但是呢bindinput 处理函数的返回值并不会反映到 textarea 上,按回车键导致点击换行符 ...

  8. java 文本读取 写入指定长度的内容

  9. ABAP读取长文本的方法

    SAP中所有的项目文本都存在以下两张数据表中: 1. STXH  抬头项目文本 透明表 2. STXL  明细项目文本   透明表 长文本读取方法 首先在STXH和STXL中根据OBJECT NAME ...

随机推荐

  1. “从客户端(content="XXXX")中检测到有潜在危险的 Request.Form值” 解决方案

    解决方案一: 在.aspx文件头中加: <%@Page validateRequest="false" %> 解决方案二: 修改web.config文件: <co ...

  2. 【codeforces 801D】Volatile Kite

    [题目链接]:http://codeforces.com/contest/801/problem/D [题意] 给你一个凸多边形的n个点; 然后允许你将每个点移动到距离不超过D的范围内; 要求无论如何 ...

  3. JavaScript学习总结(7)——JavaScript基础知识汇总

  4. Java8新特性之forEach遍历

    参考文章: https://www.cnblogs.com/billyu/p/6118008.html

  5. 清北学堂模拟赛d5t5 exLCS

    分析:比较巧妙的一道题.经典的LCS算法复杂度是O(nm)的,理论上没有比这个复杂度更低的算法,除非题目有一些限制.这道题中两个字符串的长度不一样,f[i][j]如果表示第一个串前i个,第二个串前j个 ...

  6. JS判断浏览器类型和屏幕分辨率来调用不同的CSS样式

    代码如下: <!-- if (window.navigator.userAgent.indexOf("MSIE")>=1) { var IE1024="&qu ...

  7. 关于Linux的本地回环路由lo [127.0.0.1 ]

    最近 打算配开发板的socket通讯,打印环境变量发现却没有 127.0.0.1 / # ifconfig -a eth0 Link encap:Ethernet HWaddr 86:43:C9:A1 ...

  8. cogs 7. 通信线路

    7. 通信线路 ★★   输入文件:mcst.in   输出文件:mcst.out   简单对比时间限制:1.5 s   内存限制:128 MB 问题描述 假设要在n个城市之间建立通信联络网,则连通n ...

  9. HDU 4362

    方程很简单 p[i][j] = min{dp[i-1][k] + |pos[i-1][k] - pos[i][k]|} + v[i][j]; 循环求值肯定TLE,主要是绝对值不方便.好吧,我真的BI了 ...

  10. 一键解决ScrollView嵌套ListView仅仅显示一行的问题

    /** * 解决ScrollView嵌套ListView仅仅显示一行的问题 * * @param listView */ private void setListViewHeightBasedOnCh ...