如何将字符串返回到主INT函数
How to return a string to the main int function?
这是下面我的代码(C )...我对如何返回getusername
中检索到主函数的用户名感到困惑。有人有否决提示或建议吗?
#include <iostream>
//For the strings obviously
#include <string>
using namespace std;
string getusername();
string user;
string getusername() {
user = system("echo %username% > NUL");
return user;
}
int main() {
string getname;
getname = getusername();
cout << "Hello: "<< getname << endl;
}
return
语句应起作用。但是,
user = system("echo %username% > NUL");
是一个问题。请参阅std::system
的文档以了解其作用。
如果您希望用户输入usre
的值,则有两个选项。如果您希望user
的价值没有空格,则可以使用:
std::cout >> user;
如果您希望user
的值包含整个文本,whitespace等,请使用:
std::getline(std:::cout, user);
如果要使用获取环境变量的值USERNAME
,请使用std::getenv
。
user = std::getenv("USERNAME");
来自http://www.cplusplus.com/reference/cstdlib/system/
返回值
如果命令是null指针,则该函数返回非零值,以防命令处理器可用,如果不是命令,则零值。
如果命令不是零指针,则返回的值取决于系统和库实现,但通常期望它是由调用命令返回的状态代码,如果支持。
如果要运行系统命令并捕获输出,则可以使用Popen。
一个简单的例子看起来像这样。
std::string exec(const std::string& cmd) {
std::array<char, 128> buffer;
std::string result;
std::shared_ptr<FILE> pipe(popen(cmd.c_str(), "r"), pclose);
if (!pipe) throw std::runtime_error("popen() failed!");
while (fgets(buffer.data(), 128, pipe.get()) != nullptr)
result += buffer.data();
return result;
}
正如其他人已经指出的,std ::系统调用不是互动的,这意味着您无法从/到shell。
我已经为POSIX符合POSIX的操作系统实现了一个不错的Popen()包装器,该操作系统允许用户轻松与Shell进行交互,您可以在此处检查。
这是一个用法示例:
try {
mp::ipstream reader("ls -l");
vector<string> output;
reader >> output;
}
catch (std::runtime_error & ex) {
// Something went wrong and ex.what() will tell you what it is
}
此库包含更多此类包装器,如果您需要您的需求,您非常欢迎您使用它们。
相关文章:
- 调用'begin(int [n])'没有匹配函数
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- "Missing type specifier - int assumed"无法通过向主函数添加"return 0"来解决
- 为什么 c++ 中的 main() 函数不采用除 int 和 void 之外的任何其他返回类型
- swap(int&, int&) 函数不起作用,当交换不使用临时变量时?
- 如何在不返回 C++ 值的情况下退出 int 函数?
- 调用 Parse int 函数时编译 parse 整数程序时出现问题
- 如何将字符串返回到主INT函数
- 为什么要使用int函数而不是void
- int 函数C++可以返回类似 "NULL" 的东西?
- C++int函数.当零是有效的返回值时,我如何检测false
- int const函数(参数)、int函数(const参数)和int函数(parameters)const之间的区别是什
- 类无法从主C++访问 int 函数
- 无法从 int 函数返回结果
- 如何将'int'函数调用到'void'函数
- 强制字符串为int函数以消耗整个字符串
- Int函数参数不能正常工作
- 删除Mat int函数(opencv)
- 为什么float参数适合int函数参数