1

嗨,我在使用此代码时遇到了一些问题

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    string line;
    //const char* test = "connect";
    #define test "connect"
    string con("c:\\filepath\\%s.txt", test);
    ifstream file;
    file.open(con.c_str());
    if (file.is_open()) {
        while (file.good()) {
            getline(file, line);
            printf("setc %s\n", line.c_str());
            //cout << "setc " << line << endl;
        }
        file.close();
    } else
        cout << "Unable to open file";
    return 0;
}

有人可以告诉我我出了什么问题

这就是我所追求的

'con' 意味着从 'test' 中获取文件名

如果你能帮助我,我将不胜感激:)

4

1 回答 1

3

有很多方法可以做到这一点。这里有两个:

std::string con1("c:\\filepath\\" test ".txt");
std::string con2("c:\\filepath\\" + std::string(test) + ".txt");

con1requires的初始化test通过宏扩展成为字符串文字,因为它依赖于字符串文字的合并。第二种形式更通用,test可以是任何可以转换为 a 的形式std::string,例如 a char const*

于 2012-12-23T09:28:51.387 回答