- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个程序:
parses text, removes pre-specified (punctuation) characters and creates a alphabetically ordered dictionary containing the parsed words from the text, which are then displayed on the screen. From Bjarne Stroustup's C++ Programming: Principle and Practice
这是我写的:
Chapter11Exercise7Execute.cpp
#include "stdAfx.h"
#include "Chapter11Exercise7.h"
const string endInput("x");
int main(){
try{
// instantiate a PunctStream object and initialize it to: cin
PunctStream ps(cin);
// construct initial set of characters to be replaced with whitepace
ps.whitespace(",");
// set case sensitivity
ps.caseSensitive(false);
string word;
vector<string> dictionary;
do{
cout << "Type a word\n>>";
cin >> word;
createDictionary(ps, dictionary);
printDictionary(dictionary);
}while(word != endInput);
}catch(exception& e){
cerr << e.what() << endl;
getchar();
}
return 0;
}
Chapter11Exercise7.h
#include "stdAfx.h"
#ifndef _Chapter11Exercise7_H
#define _Chapter11Exercise7_H
class PunctStream{
public:
// constructors
PunctStream(istream& is): source(is), sensitive(true){ }
// member-functions
// creates a set of characters to be searched and replaced with whitespace
void whitespace(const string& s){white = s;};
void addWhitespace(char c){white += c;};
bool isWhitespace(char c);
// set case sensitivity
void caseSensitive(bool b){sensitive = b;};
bool isCaseSensitive(){return sensitive;};
// overwritten extraction operator
PunctStream& operator>>(string& s);
// operator that returns a bool value on success/failure of PunctStream object
operator bool();
private:
// stream containing text to be parsed
istream source;
// stringstream containing a parsed text
istringstream buffer;
// case sensitivity
bool sensitive;
// characters to be replaced with whitespace
string white;
};
// Non-member functions
void createDictionary(PunctStream& ps, vector<string>& d);
void printDictionary(vector<string>& d);
#include "Chapter11Exercise7V1.cpp"
#endif
Chapter11Exercise7.cpp
#include "Chapter11Exercise7.h"
// Member functions definition
bool PunctStream::isWhitespace(char c){
for(size_t i; i < white.size(); i++) if (c == white[i]) return true;
return false;
}
// Overwritten operators definition
PunctStream& PunctStream::operator>>(string& s){
while(!(buffer >> s)){
// if buffer bad() or source not food => return PunctStream object
// this is a pointe to the object in context
if(buffer.bad() || !source.good()) return *this;
buffer.clear();
string line;
// get a line from source
getline(source, line);
// replace "white" characters in "line"
for(size_t i = 0; i < line.size(); ++i){
if(isWhitespace(line[i])) line[i] = ' ';
// if case sensitivity is set => convert to lowercase
else if (!sensitive) line[i] = tolower(line[i]);
}
// initialize the stringstream buffer to "line"
buffer.str(line);
}
return *this;
}
PunctStream::operator bool(){
// to return true: fail() and bas() should be unset, good()-set
return !(source.fail() || source.bad()) && source.good();
}
// Non-member functions
void createDictionary(PunctStream& ps, vector<string>& d){
string word;
while(ps >> word) d.push_back(word);
sort(d.begin(), d.end());
}
void printDictionary(vector<string>& d){
for(size_t i = 0; i < d.size(); ++i) cout << d[i] <<'\n';
}
我得到的错误如下:
1>------ Build started: Project: bjarneStroustroupC, Configuration: Debug Win32 ------
1> Chapter11Exercise7Execute.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(860): error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ios(176) : see declaration of 'std::basic_ios<_Elem,_Traits>::basic_ios'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> This diagnostic occurred in the compiler generated function 'std::basic_istream<_Elem,_Traits>::basic_istream(const std::basic_istream<_Elem,_Traits> &)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我已阅读错误消息,但它没有响铃。欢迎任何见解或建议!
最佳答案
如果您尝试复制 istream
对象,这是您收到的错误消息,因为 istream
不可复制。我认为这特别发生在这里:
class PunctStream{
public:
PunctStream(istream& is): source(is), sensitive(true){ }
private:
istream source;
};
在这里,您试图将 source
数据成员初始化为输入流参数 is
的拷贝,因此出现错误。
要解决此问题,请考虑将 source
更改为 istream&
- 对 istream
的引用 - 而不是具体的 istream
对象。
希望这对您有所帮助!
关于c++ - 自定义流对象错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210943/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!