附加字符串产生多行字符串

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 对我的帮助)