C++中,如何执行一个控制台命令并返回结果到字符串string中

在写作c、c++控制台程序时,我们可以直接调用控制台下的命令,在控制台上输出一些信息。

调用方式为 system(char*);

例如,在控制台程序中,获得本机网络配置情况。

int main(){

system("ipconfig");

return 0;

}

但是,如果我们想保存调用命令的输出结果呢?

这里给大家介绍一种方法:

#include <string>
#include <iostream>
#include <stdio.h>

std::string exec(char* cmd) {
    FILE* pipe = popen(cmd, "r");
    if (!pipe) return "ERROR";
    char buffer[128];
    std::string result = "";
    while(!feof(pipe)) {
    	if(fgets(buffer, 128, pipe) != NULL)
    		result += buffer;
    }
    pclose(pipe);
    return result;
}
如果是在windows系统下,请用_popen, _pclose替换popen, pclose。

这个函数中,输入的是命令的名字,返回的是执行的结果。

从一个国外网站上看来的:http://stackoverflow.com/questions/478898/how-to-execute-a-command-and-get-output-of-command-within-c

C++,将一个字符串存储在外部存储器通常涉及到文件的读写操作。这里提供一个简单的例子来说明如何将输入的字符串写入到一个文件: ```cpp #include <iostream> #include <fstream> #include <string> int main() { // 创建一个string对象来存储输入的字符串 std::string inputString; // 输出提示信息并获取用户输入 std::cout << "请输入一个字符串: "; std::getline(std::cin, inputString); // 使用getline函数获取一行输入 // 打开文件,准备写入数据 std::ofstream outFile("output.txt", std::ios::out); // 使用ofstream创建并打开文件 if (!outFile) { std::cerr << "无法打开文件!" << std::endl; return 1; } // 将字符串写入文件 outFile << inputString; // 关闭文件 outFile.close(); std::cout << "字符串已存储在 'output.txt' 文件." << std::endl; return 0; } ``` 这个程序首先包含了必要的头文件,然后在`main`函数实现了以下步骤: 1. 创建一个`std::string`对象来存储用户输入的字符串。 2. 通过标准输入获取用户输入的字符串。 3. 创建一个`std::ofstream`对象来打开(或创建)一个文件,准备写入数据。 4. 检查文件是否成功打开。 5. 将字符串写入文件。 6. 关闭文件流。 要从外存读取字符串,可以使用`std::ifstream`类来实现。下面是读取刚才存储在文件字符串一个例子: ```cpp #include <iostream> #include <fstream> #include <string> int main() { std::string readString; std::ifstream inFile("output.txt", std::ios::in); // 使用ifstream打开文件进行读取 if (!inFile) { std::cerr << "无法打开文件!" << std::endl; return 1; } // 从文件读取字符串 if (std::getline(inFile, readString)) { std::cout << "从文件 'output.txt' 读取的字符串是: " << readString << std::endl; } else { std::cerr << "文件内容为空或读取失败!" << std::endl; } inFile.close(); return 0; } ``` 在这个例子,我们使用`std::ifstream`来读取之前写入到"output.txt"文件字符串。程序打开文件,使用`std::getline`函数读取字符串,并输出到控制台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值