C++多个文本读取问题
同时使用两个 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++多个文本读取问题的更多相关文章
- opencv从txt文本读取像素点并显示
opencv从txt文本读取像素点并显示 文本储存格式为每行一个像素点,排列为RGB.每帧图像的帧头为65535. 如下图所示 废话不多说,代码如下: // #include <iostrea ...
- 批量文本读取URL获取正常访问且保留对应IP
#coding=utf-8 import sys import requests for i in range(3000,4999,1): url = 'http://192.168.88.139:8 ...
- 接口测试工具-Jmeter使用笔记(六:从文本读取参数)
使用场景:测试一个接口并发处理数据的能力,并且每次请求传入的参数都要不同. 解决方法--- CSV Data Set Config 列举一个实例,步骤中会侧重读取参数操作的说明,其他有疑问的步骤请查阅 ...
- 自动化测试-19.selenium定位之通过JS修改html写入日期数据以及从文本读取数据实战
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.support.select import ...
- python3文本读取与写入常用代码
创建文件夹: import os import shutil def buildfile(echkeyfile): if os.path.exists(echkeyfile): #创建前先判断是否存在 ...
- JAVA本地文本读取---解决中文乱码
import java.io.*; public class ReadFile { public static void main(String[] args) { try { File file = ...
- 微信小程序-textarea中的文本读取以及换行问题
今天客户那边要求textarea中输入的问题可以按回车键换行,而我使用的是bindinput获取值,但是呢bindinput 处理函数的返回值并不会反映到 textarea 上,按回车键导致点击换行符 ...
- java 文本读取 写入指定长度的内容
- ABAP读取长文本的方法
SAP中所有的项目文本都存在以下两张数据表中: 1. STXH 抬头项目文本 透明表 2. STXL 明细项目文本 透明表 长文本读取方法 首先在STXH和STXL中根据OBJECT NAME ...
随机推荐
- wmpnetwk.exe怎么禁启动
Win7控制面板--管理工具--服务,找到并选中"Windows Media Player Network Sharing Service"服务,右键点"属性" ...
- CI笔记
1.控制器 实现自己的控制器MY_Controller是在./application/core/MY_Controller.php中. 2.类库 添加自己的类是放在./application./lib ...
- hdu_1029-Ignatius and the Princess IV_201310180916
Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32767 K ( ...
- 【ACM】hdu_1089_A+BI_201307261121
A+B for Input-Output Practice (I)Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- [bzoj1342][Baltic2007]Sound静音问题_单调队列
Sound静音问题 bzoj-1342 Baltic-2007 题目大意:给定一个n个数的序列,求所有的长度为m的区间,使得区间内最大值减去最小值不超过阈值c. 注释:$1\le n \le 10^6 ...
- [bzoj3702/2212][Poi2011]二叉树/Tree Rotations_线段树
二叉树 Tree Rotations bzoj-3702 bzoj-2212 Poi-2011 题目大意:现在有一棵二叉树,所有非叶子节点都有两个孩子.在每个叶子节点上有一个权值(有n个叶子节点,满足 ...
- alexanderanokhin ---DTRACE
https://alexanderanokhin.wordpress.com/2011/11/13/dynamic-tracing-of-oracle-logical-io/
- 实现MVC.NET 5的国际化
实现国际化有三种做法: 创建资源文件. 每种语言设置一套单独的View. 1 + 2. 通常而言,第一种方法的可维护性是最高的.因为随着项目的规模的扩大,为每种语言设置一套单独的View,前期的工作量 ...
- HDU 4519
实现简单,但不得不说是一道好题. 当员工数少于医生数时,直接输出K,因为此时N个员工同时检查,必定是最少的时间了. 当员工数大于医生数时,可以把员工的项目看成一段一段的,每个医生对其进行切割,总能得到 ...
- Maven中的dependency的scope作用域详解
1.test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖 2.compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去 3.provided依赖:在编译和测试的过程有效,最后 ...