我无法让这个字符串在 C++ 中工作

Posted

技术标签:

【中文标题】我无法让这个字符串在 C++ 中工作【英文标题】:I can not get this string to work in C++ 【发布时间】:2016-02-23 16:26:29 【问题描述】:

我不知道为什么我在使用字符串文件名时出现编译错误;它说它“超出范围”我尝试使用 cstrings 并且没有用,我从教科书中复制了一个基本的字符串示例代码,甚至没有编译。

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main()

ifstream file1;

// setting variables up for calculation
string filename;
float average, x;
float total = 0;
float count = 0;
float min = 0;
float max = 0;


//asking for file name
cout << "What is the name of the file you wish to open" << endl;
getline(cin, filename);

// opening file
file1.open(filename);
if (file1.fail())

cout << "Failure to open that file, please try again." << endl;
return 0;


//reading file 
if (file1.is_open())
   
while (file1 >> x)

    if (x <= min)
     x = min;
    
    if (x >= max)
     x = max;
    
    total = total + x;
    count++;
    if (file1.eof())
     break;
    


// final calculations and testing 
average = (total / average);
cout << "Minimum = " <<  min << endl;
cout << "Maximmum = " << max << endl;
cout << "The total count = " << count << endl;
file1.close();
return 0;

【问题讨论】:

我可以编译代码了,你遇到了什么具体的编译错误? 要考虑的三件事:1 发布确切的错误消息。 2 正确格式化/缩进你的代码。 3 将其剥离为重现问题所需的最少代码。 你在编译时设置了 c++11 标志吗? 这里的代码编译没有错误:ideone.com/O6YNVl 还要注意代码的格式,以及它与您发布的内容有何不同。 @PaulMcKenzie 如果我在没有 c++11 的情况下编译代码,在打开时使用字符串会出错。 ideone.com/1QgoIo 【参考方案1】:

在 C++ 11 之前,文件流仅使用 const char* 作为文件名。对于 C++ 11,std::string 也有重载。如果您没有重载,请在对open 的调用中使用filename.c_str() 来获取指向具有filename 内容的C 字符串的指针。

【讨论】:

以上是关于我无法让这个字符串在 C++ 中工作的主要内容,如果未能解决你的问题,请参考以下文章

C++ 由于某种原因,我无法让模板在链表中工作,我敢打赌这是一个简单的错误,但我就是不明白

让 printf 语句在 openCL 内核代码中工作

常量字符串如何在 C++ 中工作

无法让导入在 web.py 项目中工作

无法让外部连接在 EF 中工作

为啥我不能让运动显着性在 OpenCV C++ 中工作?