标签: stringstream

C++ cin vs. C sscanf

所以我在C中写了这个,所以sscanf扫描s然后丢弃它,然后扫描并存储它.因此,如果输入为"Hello 007",则扫描Hello但丢弃,并将d7存储在d中.

static void cmd_test(const char *s)
{
    int d = maxdepth;
    sscanf(s, "%*s%d", &d);
}
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是如何在C++中做同样的事情?可能使用stringstream?

c c++ scanf stringstream cin

3
推荐指数
1
解决办法
1288
查看次数

从整数值返回固定长度的std :: string

问题 - >将固定长度字符串返回到std :: string*.
目标机器 - > Fedora 11.

我必须派生一个函数,它接受整数值并将固定的长度字符串返回给字符串指针 ;
例如 - > int value的范围是0到-127

所以对于int值0 - >它显示000
为值-9 - >它应该返回-009
表示值-50 - >它应该返回-050
表示值为-110 - >它应该返回-110

所以简而言之,在所有情况下,长度应该相同.

我做了什么:我已经根据下面的要求定义了这个功能.

我需要帮助的地方:我已经派生了一个函数,但我不确定这是否是正确的方法.当我在Windows端的独立系统上测试它时,exe有时会停止工作,但是当我在Linux机器上包含这个功能和整个项目时,它可以完美地工作.

    /* function(s)to implement fixed Length Rssi */
 std::string convertString( const int numberRssi, std::string addedPrecison="" )
 {
     const std::string         delimiter   =   "-";
                stringstream   ss;

     ss  << numberRssi ;
     std::string tempString = ss.str();
     std::string::size_type found = tempString.find( delimiter );
     if( found == std::string::npos )// not found
     { …
Run Code Online (Sandbox Code Playgroud)

c++ string stringstream

3
推荐指数
3
解决办法
1万
查看次数

c ++在写入流时执行函数

我有一个简单的GUI程序,它使用自定义stringstream将控制台的输出重定向到GUI中的文本字段(在某些情况下).目前.每当我点击输入时窗口都会重绘,但有时可能会在其他时间生成输出.有没有办法注册一个函数,stringstream每次<<在流上使用运算符时都会执行该函数?

注意

我应该指出我不能在我的解决方案中使用C++ 11.将编译和运行它的机器将没有c ++ 11可用.

c++ events callback stringstream

3
推荐指数
1
解决办法
1498
查看次数

使用ostringstream格式化double到string

我想将double转换为字符串,在点之后舍入到2位小数.我希望1.009表示为"1.01",1.0表示为"1".这就是我尝试过的:

std::ostringstream oss;
oss << std::fixed << std::setprecision(2) << std::noshowpoint  << 1.0;
Run Code Online (Sandbox Code Playgroud)

它输出"1.00",即使我从未设置宽度甚至指定std::noshowpoint.如何实现理想的表示?

c++ stringstream number-formatting

3
推荐指数
1
解决办法
3624
查看次数

如何从字符串中删除第一个单词?

让我说我有

string sentence{"Hello how are you."}
Run Code Online (Sandbox Code Playgroud)

而且我希望字符串句子没有"Hello"而"你好吗".我该怎么做呢

我尝试过这样的事情:

stringstream ss(sentence);
ss>> string junkWord;//to get rid of first word
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

cout<<sentence;//still prints out "Hello how are you"
Run Code Online (Sandbox Code Playgroud)

很明显,stringstream它不会改变实际的字符串.我也尝试过使用,strtok但效果不佳string.

c++ string stringstream strtok

3
推荐指数
1
解决办法
1万
查看次数

C++:解析带有括号的数字字符串

这似乎微不足道,但我似乎无法解决这个问题.我有格式的STL字符串2013 336 (02 DEC) 04(04小时在哪里,但这是无关紧要的).我想提取月份的日期(02在示例中)和月份以及小时.

我试图干净利落地避免例如在括号中拆分字符串,然后使用子字符串等.理想情况下,我想使用a stringstream并将其重定向到变量.我现在得到的代码是:

int year, dayOfYear, day;
std::string month, leftParenthesis, rightParenthesis;
std::string ExampleString = "2013 336 (02 DEC) 04";

std::istringstream yearDayMonthHourStringStream( ExampleString );
yearDayMonthHourStringStream >> year >> dayOfYear >> leftParenthesis >> day >> month >> rightParenthesis >> hour;
Run Code Online (Sandbox Code Playgroud)

它提取year并且dayOfYear好了2013,336但事情开始变得糟糕.day0,month和空字符串,和hour843076624.

leftParenthesis(02这样它包含day但当我尝试省略leftParenthesis变量时,重定向yearDayMonthHourStringStreamday也是0. …

c++ stringstream c++11

3
推荐指数
1
解决办法
1450
查看次数

C++ stringstream添加额外的字节

我想从这个事实开始,我还在学习C++,其中一些东西仍然令我困惑.

我想要完成的是构建一个字节流以通过套接字发送.我正在尝试为握手创建一个长度为1536字节的数据包

std::stringstream s1Stream;
char randData[1528], zeroVal[4] = {0, 0, 0, 0};
memset(&randData, 1, sizeof(randData)); // Fill the buffer with data

s1Stream << timestampVal; // 4 bytes
s1Stream << zeroVal; // 4 bytes
s1Stream << randData; // 1528 bytes
Run Code Online (Sandbox Code Playgroud)

当我将s1Stream转换为字符串并检查该字符串的size()时,程序会说大小为1541.

我究竟做错了什么?

c++ stringstream c++11

3
推荐指数
1
解决办法
1109
查看次数

E0369连接字符串引用时

下面的示例显示了两个函数foo(),bar()它们尝试连接两个字符串.如果左侧+参数为a,则代码将无法编译&String.

这是一个例子,foo()其中无法编译错误消息[E0369].该函数bar()表明我可以通过克隆LHS参数来摆脱困境.我的直觉表明这种克隆应该是多余的.

为什么我要clone()参加LHS论证?这是Rust +-operator 当前实现状态的反映,还是有一种有意的深层思考?

// rustc 1.7.0-nightly (110df043b 2015-12-13)

fn foo(a: &String, i: i32) -> String {
    a + &i.to_string() // .. '+' cannot be applied to type & .. String [E0369]
}

fn bar(a: &String, i: i32) -> String { 
    a.clone() + &i.to_string() // Ok
}

#[test]
fn my_test() {
    assert!(foo(&"s".to_string(), 42) == "s42"); // fn foo(..) failed to compile
    assert!(bar(&"s".to_string(), …
Run Code Online (Sandbox Code Playgroud)

operator-overloading stringstream rust

3
推荐指数
1
解决办法
60
查看次数

std :: stringstream中双输出的默认格式标志(和宽度)是多少?

什么是默认格式,当我写一个双倍的stringstream

double v = 3.0;
std::stringstream ss;
ss << v;
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到一个默认格式设置列表stringstreamstd::istream(在stdlib中)的所有派生类的默认格式是否相同?

c++ precision std stringstream

3
推荐指数
1
解决办法
69
查看次数

十六进制输出到String c ++

我正在尝试将printf输出转换为std::string变量。我有以下for循环:

for(i=0; i<53; i++) {
    printf("%02X", pbRecvBuffer[i]);
}
Run Code Online (Sandbox Code Playgroud)

此循环的输出为十六进制值,例如:01445420434F2..。我的第一次尝试是使用stringstream以下方法:

stringstream os;

for(i=0; i<53; i++) 
    os << std::hex << pbRecvBuffer[i];

std::cout << os << std::endl;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这给了我错误的结果。也许有人直接看到它可以帮助我。

c++ string hex stringstream

3
推荐指数
1
解决办法
47
查看次数