小编ikh*_*ikh的帖子

是gcc 4.9.x的稳定版吗?

胡,我对只读模式感到惊讶......

无论如何,我知道许多程序使用偶数版本编号,如linux内核2.x.

[主要版本].[主要修订].[次要修订]

如果重大修订是奇怪的,它是不稳定的版本.

但在维基百科页面中,它说gcc 4.9.0是稳定版.

难道不是 GCC使用该版本编号?但我听说gcc 4.7有很多bug,所以我无法确定..

gcc gcc4.9

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

如何在 Rust 中写入达到缓冲区大小的格式化字符串?

当缓冲区大小不足时,似乎write!不要写参数。

use std::fmt::Write;
use arrayvec::ArrayString; // 'arrayvec' crate

fn main() {
    const SIZE: usize = 16;
    let mut s = ArrayString::<SIZE>::new();
    match write!(s, "{}{}", "0123456789", "0123456789") {
        Ok(_) => println!("success!"),
        Err(err) => println!("{}", err),
    }
    println!("{}", s);
}
Run Code Online (Sandbox Code Playgroud)

输出:

an error occurred when formatting an argument
0123456789
Run Code Online (Sandbox Code Playgroud)

但是,我想编写尽可能长的格式化字符串,直到缓冲区大小为止。在上面的例子中,我想要的输出是0123456789012345.

在C中,我们可以使用snprintf来完成这个任务。

an error occurred when formatting an argument
0123456789
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 Rust 中做到这一点?

rust

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

C++程序将'*'读作'a'

我正在研究一个简短的小计算器程序,它接受命令行参数并执行相关操作.这一切都很好,除了乘法.

当我在命令行中键入"./calc 3*3"时,程序会发出错误,当我"cout"它存储为运算符的char时,它会显示"a".所有其他运营商都运作良好.

你们能弄明白为什么它不接受"*"作为一个字母吗?

这是代码和一些示例输出:

#include <iostream>
#include <cstdlib>
using namespace std;

const int MINIMUM_ARGUMENTS = 4; //must have at least 4 arguments: execution command, a first number, the operator, and a second number;

double Add(double x, double y);
double Subtract(double x, double y);
double Multiply(double x, double y);
double Divide(double x, double y);

int main(int argc, char* argv[])
{
    if (argc < MINIMUM_ARGUMENTS) //"less than" because counting execution command as first argument
    {
        cout << "\nMust have at least …
Run Code Online (Sandbox Code Playgroud)

c++ command-line pointers char command-line-arguments

1
推荐指数
2
解决办法
135
查看次数

Boost.Asio - 具有自定义缓冲区的多个缓冲区

我正在写一种tcp服务器.我正在使用Boost.Asio,使用shared_const_buffer.

现在我必须编写多个缓冲区.所以我这样写:

std::vector<shared_const_buffer> bufs;
bufs.push_back(buf1);
bufs.push_back(buf2);
...
boost::asio::async_write(*pSock, bufs, [] { ... });
Run Code Online (Sandbox Code Playgroud)

但是,我可以看到一个错误.

d:\ boost_1_56_0\boost\asio\detail\consume_buffers.hpp(175):错误C2679:이항'=':오른쪽피연산자로'shared_const_buffer'형식을사용하는연산자가없거나허용되는변환이없습니다.

好吧,我的Visual Studio不是英文版> o <这是我的翻译

d:\ boost_1_56_0\boost\asio\detail\consume_buffers.hpp(175):错误C2679:二元运算符'=':没有使用shared_const_buffer类型作为右侧的运算符或允许的转换.

我不确定我的翻译是否正确,但我认为你可以得到一个观点.无论如何,我看到boost\asio\detail\consuming_buffers.hpp(175)了解决问题.

if (!at_end_)
{
  first_ = *buffers_.begin(); // <-- here's error point
  ++begin_remainder_;
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试添加铸造操作员shared_const_buffer,它神奇地工作.

这是我的mcve

#include <iostream>
#include <vector>
#include <memory>

#include <boost/asio.hpp>

using boost::asio::ip::tcp;

class shared_const_buffer
{
private:
    std::shared_ptr<std::vector<char> > m_pData;
    boost::asio::const_buffer m_buffer;

public:
    explicit shared_const_buffer(const std::vector<char> &data)
        : m_pData { std::make_shared<std::vector<char> >(data) }
        , m_buffer { …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-asio

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

在循环中计算重复的char时std :: erase崩溃了吗?

分段错误出现在下面的代码中.

计算重复char的总数不作为示例

输入:

helloWorld
Run Code Online (Sandbox Code Playgroud)

输出:

l = 3
o = 2
Run Code Online (Sandbox Code Playgroud)

脚步

  1. 循环输入字符串

  2. 搜索每个字符

  3. 指望找到

  4. del计算的char

以下是我的代码

#include<iostream>

#include<string>
#include<bits/stdc++.h>
#include <algorithm>

int main()
{
        std::string str;
        std::cin>>str;
        int cout = 0;
        std::string::iterator it1,it2;
        for(it1 = str.begin() ; it1!=str.end(); ++it1)
        {

                for(it2 = str.begin() ; it2!=str.end(); ++it2)
                {
                        if(*it1==*it2)
                        {
                                ++cout;
                                continue ;
                        }
                }
                if(cout >1)
                {
                        std::cout<<*it1<<"="<<cout<<"\n";
                        if(!str.empty() && str.find(*it1))
                          str.erase(std::remove(str.begin(), str.end(), *it1), str.end()); // remove char once count done
                }
                        cout=0;
        }
}
Run Code Online (Sandbox Code Playgroud)

c++ string

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

C:这个数组初始化是否合法?

int ar[] = { 1, 2, 3, };
Run Code Online (Sandbox Code Playgroud)

这段代码合法吗?

(我的意图是)

int ar[] = { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

c

-2
推荐指数
2
解决办法
297
查看次数