c++ 文件操作 如何处理空格的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 文件操作 如何处理空格的相关的知识,希望对你有一定的参考价值。

想把空格也能读入

首先要说的是这个很简单,文件和键盘输入一样的,特别在c++里,要说区别的话就是文件是事先输入。要读空格可以用整行读get()或者getline(),这不仅用于文件。
例如:
char str1[20];
string str2;

cin.get(str1,20);
getline(cin,str2);

一点区别
get()把读取回车,把回车留在缓存里。getline读取回车,并把回车转换为空格 即读取并丢掉
参考技术A #include <stdlio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <fstream>
//deng

int main()

ifstream fInfoCache;
string strCacheInfo;
char szBuff[BUFF_SIZE] = 0;

fInfoCache.open(m_strCacheFile.c_str());
if (fInfoCache != 0)

while (!fInfoCache.eof())

if (fInfoCache.read(szBuff, BUFF_SIZE) != NULL)

strCacheInfo += szBuff;

memset(szBuff, 0, 128);

fInfoCache.close();


printf("%s\n", strCacheInfo.c_str());
return 0;
参考技术B 用fgets函数,原型为char* fgets(存入的数组,读入字符的个数,文件的指针)
遇到换行或已经读入参数给的字符数量结束。
当然也可以用fscanf,用%c的形式读入。
不好意思,给你弄成c语言了,用cin.getline
参考技术C 可以用gets()和puts()实现(括号里是输入的数据)
我举个例子
#include <iostream>
using namespace std;
int main()

char a[100];
cout<<"please input some sign"<<endl;
gets(a);
puts(a);
return 0;


希望对你有帮助
参考技术D getline函数应该可以胜任

VB调用SHELL,参数路径有空格如何处理?

比如:当前程序所在路径为:d:\1 23\4下,即app.path为在d:\1 23\4,在此目录下有一批处理dx.bat,如果通过SHELL调用此批处理?
无空格时格式为:xxx=shell(app.path & "dx.bat",vbHide)
因为app.path中有空格,要想用以上格式调用dx.bat,应该如何写?
请给出完整答案!谢谢!

操作系统:WIN7
因为路径中有空格,所以要加引号处理路径,我要的是加引号处理后的语句!
即:如何给app.path & "\dx.bat"加引号处理了!

i=shell(app.path & "\dx.bat",vbHide),要的是这种格式的。

这个跟空格有关吗?倒是你的程序少了一个\,应该为xxx=shell(app.path & "\dx.bat",vbHide)
按照你的意思,你的app.path应该取值为d:\1 23\4,4后面是没有 \ 这个符号的,再跟后面的dx.bat想连接,就成了d:\1 23\4dx.bat,执行的时候应该提示找不到文件这个错误提示吧?

我试过之后才恢复的啊,我也是WIN7系统呢,这是咋地了?你那提示什么错误啊?追问

根本就不执行那个批处理程序

追答

你把 vbhide 取消看一下,是否有执行呢,我是真的测试过了的,完全可以执行

追问

我要写成这样的:
i=shell(app.path & "\dx.bat",vbNormalFocus),因为app.path中有空格,所有要对路径加引号处理,我要的就是加引号处理后的语句。

追答

我当前工程文件的路径为 C:\Users\Administrator\Desktop\V B
dx.bat文件里面只有一句话: md c:\1
程序里面只有一个按钮,代码如下:
Private Sub Command1_Click()
Dim I As Integer
I = Shell(App.Path & "\dx.bat", vbNormalFocus)
End Sub
测试通过

追问

我的是WIN7 32位,你的是什么系统?

追答

也是啊,我们QQ聊,如何?43595076

参考技术A 不影响的吧,文件夹创建可以用空格,打开也是一样的吧:
shell“d:\1 23\4\dx.bat"
因为是字符,空格不影响。我是这么理解的追问

你自己试下有空格能不能通过就知道了!
我是想用app.path这个路径

追答

明白了!:
shell"explorer d:\1 23\4\dx.bat"

追问

大哥,我要的是把d:\1 23\4用app.path取代后的语句。

参考技术B i=shell(chr(34) & app.path & "\dx.bat" & chr(34),vbHide)本回答被提问者采纳

以上是关于c++ 文件操作 如何处理空格的的主要内容,如果未能解决你的问题,请参考以下文章

如何处理来自用户输入的偶数数组并在 C++ 中用空格显示它们

VB调用SHELL,参数路径有空格如何处理?

VB调用SHELL,参数路径有空格如何处理?

Asyncio:如何处理多个打开的文件操作系统错误

手动创建编写bat文件来操作mysql,如何处理换行

如何处理SQL Server事务复制中的大事务操作