附加字符串产生多行字符串
Appended strings producing a string that is multiple lines
我正在尝试编写一个程序来找出个人桌面(在 macOS 上)的路径并创建一个文本文件。为了测试,我也让它输出了路径。这是代码:
#include <iostream>
#include <string>
#include <fstream>
#include <cstdio>
using namespace std;
int main(){
char text[255]; //finds username first
FILE *name;
name = popen("whoami", "r");
fgets(text, sizeof(text), name);
std::string path1 = "/Users/"; //strings are "added" to create 1 (test1)
std::string pathvar = text;
std::string pathend = "/Desktop/test.txt\n";
std::string fullpath= path1 + pathvar + pathend;
std::cout << fullpath << "\n";
std::string test2; //strings are appended to create 1 (test2)
test2.append("/Users/");
test2.append(text);
test2.append("/Desktop/test.txt");
std::cout << test2 << "\n";
std::ofstream outfile (fullpath);
outfile << "test!" << "\n";
outfile.close();
}
但是,它输出的路径分为两行,像这样:
/Users/username
/Desktop/test.txt
而且程序没有在我的桌面上输出文本文件。
我试过连接和附加字符串,但两种方式都被破坏了。我该如何修复它,以便组装的字符串是一行并且程序生成一个文本文件?谢谢!
为了修复 pathvar 字符串,我使用以下方法从中删除了“\n”:
pathvar.erase(std::remove(pathvar.begin(), pathvar.end(), '\n'),
pathvar.end());
修复了输出路径并允许在我的桌面上创建文本文件。
最初的问题是由于 fget
在读取“whoami”文件时包含 \n
,导致新行开始,将完整路径分成两行并阻止文本文件正在生成。
(感谢@Igor Tandetnik 对我的帮助)
我正在尝试编写一个程序来找出个人桌面(在 macOS 上)的路径并创建一个文本文件。为了测试,我也让它输出了路径。这是代码:
#include <iostream>
#include <string>
#include <fstream>
#include <cstdio>
using namespace std;
int main(){
char text[255]; //finds username first
FILE *name;
name = popen("whoami", "r");
fgets(text, sizeof(text), name);
std::string path1 = "/Users/"; //strings are "added" to create 1 (test1)
std::string pathvar = text;
std::string pathend = "/Desktop/test.txt\n";
std::string fullpath= path1 + pathvar + pathend;
std::cout << fullpath << "\n";
std::string test2; //strings are appended to create 1 (test2)
test2.append("/Users/");
test2.append(text);
test2.append("/Desktop/test.txt");
std::cout << test2 << "\n";
std::ofstream outfile (fullpath);
outfile << "test!" << "\n";
outfile.close();
}
但是,它输出的路径分为两行,像这样:
/Users/username
/Desktop/test.txt
而且程序没有在我的桌面上输出文本文件。 我试过连接和附加字符串,但两种方式都被破坏了。我该如何修复它,以便组装的字符串是一行并且程序生成一个文本文件?谢谢!
为了修复 pathvar 字符串,我使用以下方法从中删除了“\n”:
pathvar.erase(std::remove(pathvar.begin(), pathvar.end(), '\n'),
pathvar.end());
修复了输出路径并允许在我的桌面上创建文本文件。
最初的问题是由于 fget
在读取“whoami”文件时包含 \n
,导致新行开始,将完整路径分成两行并阻止文本文件正在生成。
(感谢@Igor Tandetnik 对我的帮助)