我认为这很简单,但它存在一些困难.如果我有
std::string name = "John";
int age = 21;
Run Code Online (Sandbox Code Playgroud)
如何组合它们以获得单个字符串"John21"?
通常当我用C++编写任何东西并且我需要将a转换为a时char,int我只需要创建一个int等于char 的新东西.
我用过代码(片段)
string word;
openfile >> word;
double lol=word;
Run Code Online (Sandbox Code Playgroud)
我收到错误
Code1.cpp cannot convert `std::string' to `double' in initialization
Run Code Online (Sandbox Code Playgroud)
错误究竟意味着什么?第一个字是数字50.谢谢:)
可能重复:
如何在C++中将double转换为字符串?
我想组合一个字符串和一个双G ++正在抛出这个错误:
main.cpp:在函数'int main()'中:
main.cpp:40:错误:类型'const char [2]'的无效操作数和'double'到二进制'operator +'
这是抛出错误的代码行:
storedCorrect[count] = "("+c1+","+c2+")";
storedCorrect []是一个字符串数组,c1和c2都是双精度数.有没有办法将c1和c2转换为字符串,以允许我的程序正确编译?
我正在尝试这个答案中提供的优雅解决方案,但无论我尝试什么,我都无法通过Implicit instantiation of undefined template此行的错误:
std::ostringstream strs;
我需要做什么?我已经包括以下内容,我肯定是有点过分了.作为第二个问题,似乎很难找到确切需要包含在ostringstream中的内容:
#include <iostream>
#include <fstream>
#include <iosfwd>
#include <ios>
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个允许我执行以下操作的宏:FORMAT(a << "b" << c << d),结果将是一个字符串 - 与创建ostringstream,插入a...d和返回相同.str().就像是:
string f(){
ostringstream o;
o << a << "b" << c << d;
return o.str()
}
Run Code Online (Sandbox Code Playgroud)
基本上,FORMAT(a << "b" << c << d) == f().
首先,我试过:
1: #define FORMAT(items) \
((std::ostringstream&)(std::ostringstream() << items)).str()
Run Code Online (Sandbox Code Playgroud)
如果第一个项目是C字符串(const char *),它将以十六进制格式打印字符串的地址,接下来的项目将打印正常.如果第一个项目是a std::string,则将无法编译(没有匹配的运算符<<).
这个:
2: #define FORMAT(items) \
((std::ostringstream&)(std::ostringstream() << 0 << '\b' << items)).str()
Run Code Online (Sandbox Code Playgroud)
带给你的似乎是一个正确的输出,但0和\b存在当然的字符串中.
以下似乎工作,但编译警告(采取临时地址):
3: #define FORMAT(items) …Run Code Online (Sandbox Code Playgroud) 我有一个数据库填充了以下双打:
1.60000000000000000000000000000000000e+01
Run Code Online (Sandbox Code Playgroud)
有人知道如何在C++中将这样的数字转换为double吗?
是否有"标准"方式来做这类事情?或者我必须自己动手?
现在我正在做这样的事情:
#include <string>
#include <sstream>
int main() {
std::string s("1.60000000000000000000000000000000000e+01");
std::istringstream iss(s);
double d;
iss >> d;
d += 10.303030;
std::cout << d << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我试图将一个double转换(和舍入)到一个char数组,而不是先在double上转换为std :: to_string.但是,我正在接收随机内存文本.我究竟做错了什么?
这是我的代码:
double d = 1.0929998;
d = std::round(d * 100) / 100;
char s[sizeof(d)];
std::memcpy(s,&d,sizeof(d));
Run Code Online (Sandbox Code Playgroud)
结果:
s: q =×£pñ?
预期价值:
s: 1.09
可能重复:
将double转换为字符串C++?
我在页面中搜索但我没有找到解决方案.
我有一个从int转换为字符串的方法.但现在我需要从float/double转换为string.因为我想在文件中写一些数据.
谁能帮我?
提前致谢.
我是C++的新手,我想知道如何输出/写入声明为double的变量到txt文件.我知道如何使用fstream输出字符串,但我无法弄清楚如何发送任何其他内容.我开始认为你不能发送任何东西,但字符串到文本文件是正确的吗?如果是这样,那么如何将存储在变量中的信息转换为字符串变量?
这是我的代码,我正在尝试实现这个概念,它相当简单:
int main()
{
double invoiceAmt = 3800.00;
double apr = 18.5; //percentage
//compute cash discount
double discountRate = 3.0; //percentage
double discountAmt;
discountAmt = invoiceAmt * discountRate/100;
//compute amount due in 10 days
double amtDueIn10;
amtDueIn10 = invoiceAmt - discountAmt;
//Compute Interest on the loan of amount (with discount)for 20 days
double LoanInt;
LoanInt = amtDueIn10 * (apr /360/100) * 20;
//Compute amount due in 20 days at 18.5%.
double amtDueIn20;
amtDueIn20 = invoiceAmt * (1 + (apr …Run Code Online (Sandbox Code Playgroud) 要将双精度转换为不带科学记数法的字符串,建议的方法是
std::ostringstream strStream;
strStream << std::fixed;
strStream << value;
std::string str = strStream.str();
Run Code Online (Sandbox Code Playgroud)
如在 将 << 与 double 一起使用时防止 ostream 中的科学记数法&如何将 double 转换为 C++ 中的字符串?
我想将双精度转换为字符串,没有任何分隔符和点/句点作为小数点,即忽略区域设置。
从ostringstream、std::fixed和showpoint的描述中,我无法确定
如果按照当前区域设置,那么如何覆盖,以便它始终以点/句号作为小数点并且没有分组?
通过相关的问答来看,转换为字符串的最佳C++实践似乎是
ostringstream stringStream;
stringStream << input_value; // let's say, input_value is a double
output_string = stringStream.str();
Run Code Online (Sandbox Code Playgroud)
有没有办法在不到三行干净的C++中实现相同的目标?